function getMaillistPostsGrid(){
	delRec = function(){
		var c = grid.selModel.getCount();
		if(c < 1){
			Ext.MessageBox.alert('Ошибка','Не выделено ни одной записи.');
			return;
		}
		Ext.MessageBox.confirm('Подтверждение','Вы действительно хотите удалить выделенное?',
			function(btn){
				if (btn!='yes') return;
				st.remove(grid.selModel.getSelected());
		});
	}
	addNewRec = function(){
		var rt = st.recordType;
		var n = new rt({Subject: 'Новая рассылка', Text: 'Новый текст'});
		grid.stopEditing();
		st.insert(0, n);
		grid.startEditing(0, 0);
	}
	var st = new Ext.data.Store({
		proxy: new Ext.data.HttpProxy({url: '/maillist/posts'}),
		restful: true,
		reader: new Ext.data.JsonReader({root: 'data',totalProperty: 'total',idProperty: 'Id'},[ 
			{name: 'Id', type: 'int', mapping: 'Id'}
			,{name: 'Subject', type: 'string', mapping: 'Subject'}
			,{name: 'Text', type: 'string', mapping: 'Text'}
            ,{name: 'Date', type: 'date', mapping: 'Date'}
            ,{name: 'Publish', type: 'boolean', mapping: 'Publish'}
		])
		,writer:new Ext.data.JsonWriter({encode: false}),
	});
	st.load();
	
	createEditor = function(st,r){
		var e = new Ext.FormPanel({
			frame:true,
		    bodyStyle:'padding:5px 5px 0',
		    defaults: {width: 530},
		    defaultType: 'textfield',
		    closable: true,
		    autoScroll: true,
			labelWidth: 135,
			title: 'Рассылка '+ r.data.Id,
			items: [{
					fieldLabel: 'Дата публикации',
					name: 'Date',
					allowBlank: true,
					value: r.data.Date,
                    xtype: 'datefield',
                    format: 'd.m.Y'
				}
                ,{
		            fieldLabel: 'Публиковать',
		            name: 'Publish',
		            xtype: 'checkbox',
		            allowBlank: false,
		            inputValue: 1,
                    checked: r.data.Publish
		        }
                ,{
					fieldLabel: 'Тема письма',
					name: 'Subject',
					allowBlank:false,
					value: r.data.Subject
				},{
					fieldLabel: 'Текст',
					xtype: 'htmleditor',
					name: 'Text',
					height: 450,
					value: r.data.Text,
                    allowBlank:false
				}
			],
			buttons: [{
					text: 'Сохранить'
					,scope: this
					,handler: function(){
						var val=e.getForm().getFieldValues();
                        var s = st.getById(r.data.Id);
						s.beginEdit();
						s.set('Subject', val.Subject);
						s.set('Text', val.Text);
                        s.set('Date', val.Date);
                        s.set('Publish', val.Publish);
						s.endEdit();
					}
				}]
		});
		return e;
	}
	var grid = new Ext.grid.EditorGridPanel({
		closable: true,
		store: st,
		clicksToEdit:2,
		height: 350,
		width: 600,
		title: 'Рассылки',
        listeners: {celldblclick: function(g){Layout.base.tab.add(createEditor(g.getStore(),g.getSelectionModel().getSelected())).show();}},
		selModel: new Ext.grid.RowSelectionModel({singleSelect:true})
		,bbar: new Ext.PagingToolbar({
			pageSize: 25,
			store: st,
			displayInfo: true,
			displayMsg: 'записи {0} - {1} из {2}',
			emptyMsg: "нет записей",
		})
		,tbar: [{text: 'Добавить',tooltip: 'Добавить новую запись', handler: addNewRec}
			,{text: 'Удалить запись',tooltip: 'Удаление выделенной записи', scope:this, handler: delRec}
			,new Nippy.SearchField({ store: st, params: {start: 0, limit: 25}, width: 120})
		]
		,columns: [{
				header   : 'Id', 
				width    : 50, 
				sortable : true, 
				dataIndex: 'Id'
			},{
                header   : 'Тема письма', 
				width    : 250, 
				sortable : true, 
				dataIndex: 'Subject'
			},{
				header   : 'Дата публикации',
				width    : 150,
				sortable : true, 
				dataIndex: 'Date',
                format: 'd.m.Y',
                xtype: 'datecolumn'
			},{
				header   : 'Публиковать', 
				width    : 150, 
				sortable : true,
				dataIndex: 'Publish',
                trueText:  'да',
                falseText:  'нет',
                xtype: 'booleancolumn'
            }
		]
	});
	return grid;
}//function